package ASAInstruction;
import java.util.List;
/**
 * Permet de découvrir si une chaine est une variable ou un fonction.
 * Classe utilisée lors du parse de javacc
 * La classe identifie et récupère les paramètres de la fonction si besoin
 * @author O.Riad
 * @author D.Romain
 * 
 */
public class FunctionOrVariable {
    
    private boolean isFunction;
    private List<String> params;
    
    /**
     * Construit un objet FunctionOrVariable
     * Par défaut, l'objet est considéré comme une variable
     * Ce n'est qu'au moment où on lui ajoute des paramètres qu'il se 
     * transforme en fonction
     */
    public FunctionOrVariable(){
        this.isFunction = false;
    }
    
    /**
     * Permet d'ajouter des paramètres. Transforme implicitement l'objet en 
     * fonction.
     * @param params La liste de paramètres
     */
    public void setParams(List<String> params){
        this.params = params;
        this.isFunction = true;
    }
    
    /**
     * Récupère la liste des paramètres de la fonction
     * @return la liste des paramètres
     */
    public List<String> getParams(){
        return this.params;
    }
    
    /**
     * Indique si l'objet correspond à une fonction
     * @return true si l'objet est une fonction, false sinon
     */
    public boolean isFunction(){
        return this.isFunction;
    }
}
